# -*- coding: utf-8 -*-

import re


def calculate_midpoint_ratio():
    # 获取参考坐标
    ref_x, ref_y = map(float, input("请输入坐标参考值x,y(用逗号分隔): ").split(","))
    
    while True:
        try:
            # 获取方块坐标
            coords = input("请输入方块坐标[[左,上],[右,下]]或输入'n'退出: ")
            if coords.lower() == 'n':
                break
                
            # 解析坐标 [492,1362][756,1407] 格式
            numbers = list(map(int, re.findall(r'\d+', coords)))
            if len(numbers) != 4:
                raise ValueError("需要4个坐标值")
            left, top, right, bottom = numbers
            
            # 计算中点
            mid_x = (left + right) / 2
            mid_y = (top + bottom) / 2
            
            # 计算比例和尺寸
            ratio_x = mid_x / ref_x
            ratio_y = mid_y / ref_y
            width = right - left
            height = bottom - top
            
            # 计算四个边相对于参考值的比例
            left_ratio = left / ref_x
            top_ratio = top / ref_y
            right_ratio = right / ref_x
            bottom_ratio = bottom / ref_y
            
            print(f"方块尺寸: 宽度={width}, 高度={height}")
            print(f"中点坐标: ({mid_x:.0f}, {mid_y:.0f})")
            print(f"中点坐标相对于参考值的比例: {ratio_x:.4f}, {ratio_y:.4f}")
            print(f"左边界相对于参考值的比例: {left_ratio:.4f}")
            print(f"上边界相对于参考值的比例: {top_ratio:.4f}")
            print(f"右边界相对于参考值的比例: {right_ratio:.4f}")
            print(f"下边界相对于参考值的比例: {bottom_ratio:.4f}\n")
            
        except (ValueError, IndexError, SyntaxError):
            print("输入格式错误，请按照[[左,上],[右,下]]格式输入")
        except ZeroDivisionError:
            print("参考值不能为0")
        except KeyboardInterrupt:
            print("\n程序已退出")
            break

if __name__ == "__main__":
    calculate_midpoint_ratio()
